package com.lzy.cloud.mq.service;

import com.lzy.cloud.mq.config.ConfigMq;
import lombok.extern.java.Log;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * Created with IntelliJ IDEA.
 * Description: lzy-cloud-service
 *
 * @author: ellengou
 * @date: 2018-07-18 星期三
 * @time: 11:50
 */
@Component
@Log
public class OrderSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sender(String orderId){
        log.info("order.cancel send message: "+orderId);

        // 添加延时队列
        rabbitTemplate.convertAndSend(ConfigMq.REGISTER_DELAY_EXCHANGE, ConfigMq.DELAY_ROUTING_KEY, orderId, message -> {
            //  第一句是可要可不要,根据自己需要自行处理
            //  message.getMessageProperties().setHeader(AbstractJavaTypeMapper.DEFAULT_CONTENT_CLASSID_FIELD_NAME, Book.class.getName());
            //  如果配置了 params.put("x-message-ttl", 10 * 1000); 那么这一句也可以省略,具体根据业务需要是声明 Queue 的时候就指定好延迟时间还是在发送自己控制时间
            message.getMessageProperties().setExpiration(10 * 1000 + "");
            return message;
        });
    }
}
